package com.test.aqs;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * CAS 比较交换
 *
 * 比较当前工作内存中的值与主内存中的值，如果相同则执行规定操作，否则继续比较直到主内存和工作内存中的值一致为止
 *
 * CAS 应用
 *
 * CAS有三个操作数，内存值V、旧的预期值A、要修改的更新值B
 * 当前仅当预期值A与内存值V相同时，将内存值V修改成B，否则什么都不做
 */
public class CASDemo {

    public static void main(String[] args) {
        AtomicInteger atomicInteger = new AtomicInteger(5);
        System.out.println(atomicInteger.compareAndSet(5, 2019)+ "\t currdata : " + atomicInteger.get());
        System.out.println(atomicInteger.compareAndSet(5, 1024)+ "\t currdata : " + atomicInteger.get());
        System.out.println(atomicInteger.incrementAndGet());
        System.out.println(atomicInteger.getAndIncrement());
        System.out.println(atomicInteger.get());
    }
}
